Доброго времени суток. Разрабатываю расширение для хром, в котором со стороннего сайта подгружаю спортивную статистику. На сайте ограничение на количество запросов в минуту. В заголовках ответов есть инфа об оставшихся запросах в минуту и секундах до сброса таймера на запросы. Реализовав запрос через fetch, столкнулся с тем, что заголовки ответов прочесть не удается. Вот код:
function parserGo(url) {
fetch(url, {
method: "GET",
headers: {
'X-Auth-Token': 'f82baa0467604922be083'
}
}).then(response => {
let arr = [
'x-authenticated-client',
'date',
'server',
'x-api-version',
'x-requestcounter-reset',
'x-requests-available-minute',
'access-control-allow-methods',
'content-language',
'access-control-allow-origin',
'transfer-encoding',
'connection',
'access-control-allow-credentials',
'content-type',
'x-application-context'
];
for (let i = 0; i < arr.length; i++) {
console.log(response.headers.get(arr[i]));
}
return response.json();
}, function(error) {
error.message
}).then(d => {
// обработка json'а
});
}
Из всего массива имен заголовков читается только два:
1. 'content-language';
2. 'content-type'.
Вычитал следующее
Существует ограничение на доступ к заголовкам ответов при использовании Fetch API над CORS. Из-за этого ограничения вы можете получить доступ только к стандартным заголовкам:
Cache-Control
Content-Language
Content-Type
Expires
Last-Modified
Pragma
Пробовал читать заголовки через XMLHttpRequest:
function getHeaders(url) {
var req = new XMLHttpRequest();
req.open('GET', url, false);
req.setRequestHeader('X-Auth-Token', 'f82baa0467604922be083');
req.send(null);
var headers = req.getAllResponseHeaders();
console.log(headers);
}
все работает отлично.
Господа умы, подскажите, работая с fetch я обречен быть "слепым" в плане необходимых мне 'x-requestcounter-reset' и 'x-requests-available-minute' ?
И почему XMLHttpRequest имеет доступ к заголовкам ответа, а fetch нет, если XMLHttpRequest и Fetch API следуют политике одного источника (same-origin policy).